package com.lantosec.hmrp.modules.notify.mapper;

import com.lantosec.hmrp.modules.notify.entity.NotifyAttachment;
import com.lantosec.hmrp.modules.notify.entity.NotifyContent;
import com.lantosec.hmrp.modules.notify.entity.NotifyInfo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lantosec.hmrp.modules.notify.entity.NotifyRecipient;
import com.lantosec.hmrp.modules.notify.vo.NotifyInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 通知 Mapper 接口
 * </p>
 *
 * @author AutoCode
 * @since 2020-05-22
 */
public interface NotifyInfoMapper extends BaseMapper<NotifyInfo> {

    /**
     * 新增通知内容
     * @param notifyContent
     */
    void insertNotifyContent(@Param("notifyContent") NotifyContent notifyContent);

    /**
     * 新增通知附件
     * @param param
     */
    void insertNotifyAttachment(@Param("param") NotifyAttachment param);

    /**
     * 查询当前用户的未读通知
     * @param userId
     * @return
     */
    List<NotifyInfoVO> getNotReadNotifyInfo(@Param("notifyTypeId") String notifyTypeId,@Param("userId") String userId);

    /**
     * 查询当前用户的未读通知数量
     * @param userId
     * @return
     */
    int countNotReadNotifyInfo(@Param("notifyTypeId") String notifyTypeId,@Param("userId") String userId);

    /**
     * 查询当前用户的已读通知
     * @param userId
     * @return
     */
    List<NotifyInfoVO> getReadNotifyInfo(@Param("notifyTypeId") String notifyTypeId,@Param("userId") String userId);

    /**
     * 查询通知内容
     * @param notifyId
     * @return
     */
    NotifyContent getNotifyContent(@Param("notifyId") String notifyId);

    /**
     * 查询通知附件
     * @return
     */
    List<NotifyAttachment> getNotifyAttachment(@Param("notifyId") String notifyId);

    /**
     * 查询部门下的人员
     * @param deptId
     * @return
     */
    List<String> getUserByDeptId(String[] deptId);

    /**
     * 查询岗位下的人员
     * @param positionId
     * @return
     */
    List<String> getUserByPositionId(String[] positionId);

    /**
     * 新增系统通知接受人
     * @param notifyRecipient
     */
    void insertNotifyRecipient(@Param("notifyRecipient") NotifyRecipient notifyRecipient);

    /**
     * 更新为已读/删除
     * @param param
     */
    void updateNotifyRecipient(@Param("param") NotifyRecipient param);

    /**
     * 查询当前用户所收到的公告信息
     * @return
     */
    List<NotifyInfoVO> getPublicRead();

    /**
     * 查询所有的通知
     * @param notifyTypeId
     * @return
     */
    List<NotifyInfoVO> getAll(@Param("notifyTypeId") String notifyTypeId, @Param("userId") String userId);

    /**
     * 查询已读通知人数
     * @param notifyId
     * @return
     */
    Integer getNotifyFinishSum(String notifyId);

    /**
     * 查询未读通知人数
     * @param notifyId
     * @return
     */
    Integer getNotifyNotFinishSum(String notifyId);
}
